#version 110
attribute vec4 a_Position; 
attribute vec4 a_Normal;
uniform mat4 u_VPMatrix; 
uniform mat4 u_ModelMatrix; 
uniform mat4 u_NormalMatrix;

varying vec4 v_Vertex;
varying vec3 v_Normal;

void main() { 
    v_Vertex = u_ModelMatrix * a_Position;
    v_Normal = normalize((u_NormalMatrix * a_Normal).xyz);
    gl_Position = u_VPMatrix * v_Vertex; 
}
